//3412.计算字符串的镜像得分
class Solution {
public:
    long long calculateScore(string s) {
        //哈希表+枚举右,维护左
        unordered_map<char,vector<int>> m; //存储右边存在的字符并记录下标位置
        int n=s.size();

        long long ret=0;
        for(int i=0;i<n;i++)
        {
            char need='z'-s[i]+'a';
            if(m.count(need))  
            {
                ret+=i-m[need].back(); //将最接近的取出来
                m[need].pop_back();
                if(m[need].empty()) m.erase(need);
            }
            else m[s[i]].push_back(i); //将当前位置加入到哈希表中
        }
        return ret;
    }
};